

//1898.可移除字符的最大数目
class Solution {
    bool check(string s,string& p,vector<int>& removable,int x)
    {
        for(int i=0;i<x;i++) s[removable[i]]='0';  //对被删除的位置进行修改

        int n=s.size(),m=p.size();
        int j=0;
        for(int i=0;i<n&&j<m;i++)
           if(s[i]==p[j]) j++;

        return j==m;
    }

public:
    int maximumRemovals(string s, string p, vector<int>& removable) {
        //如果一个个的进行移除效率太低了
        //可以使用二分进行优化
        int n=removable.size();
        int left=0,right=n+1;
        while(left+1<right)
        {
            int mid=left+(right-left)/2;
            if(check(s,p,removable,mid)) left=mid;
            else right=mid;
        }
        return left;
    }
};